import type {
  setTeamListWholeType,
  RequtstTeamItemType,
  RequtstTeamListType
} from '@/types/TeamListType'
import { ref } from 'vue'
// 创建一个生成随机数的函数
function setRandom(sta: number, end: number) {
  return Math.floor(Math.random() * (end - sta + 1)) + sta
}
// 声明的组题列表假数据数组
const TeamList = ref<setTeamListWholeType[]>([]) // 先往假数据中添加数据
// 声明的题目预览假数据数组
const TopicPreview = ref<any>([])
for (let i = setRandom(0, 499); i < 996; i++) {
  // 预计添加n条假数据, 到996结束
  // 录入人数组
  const user = [
    '余涛',
    '黄涛',
    '袁秀英',
    '汪超',
    '徐娜',
    '邓军',
    '常强',
    '雷娜',
    '杜强',
    '胡伟'
  ]
  // 生成的随机年月日
  const n = setRandom(2020, 2023) // 年
  const y = setRandom(1, 12).toString().padStart(2, '0') // 月
  const r = setRandom(1, 28).toString().padStart(2, '0') // 日
  const h = setRandom(0, 23).toString().padStart(2, '0') // 时
  const m = setRandom(0, 59).toString().padStart(2, '0') // 分
  const s = setRandom(0, 59).toString().padStart(2, '0') // 秒
  // 声明一个空对象
  const obj = {
    id: '', // 编号
    addTime: `${n}-${y}-${r} ${h}:${m}:${s}`, // 组题时间
    userName: user[setRandom(0, 9)], // 录入人
    questionIDs: '', // 题目编号
    progressOfAnswer: setRandom(10, 100), // 答题进度
    accuracyRate: setRandom(10, 100), // 正确率
    totalSeconds: setRandom(100, 5000), // 答题总耗时秒
    questionType: setRandom(1, 3).toString() // 组题类型(1: 单选, 2: 多选, 3: 简答)
  }
  if (i < 10) {
    obj.id = `m0610278112261488960${i}`
    obj.questionIDs = `o75111626169778613460n6069124533325333330${i}`
  } else {
    obj.id = `m061027811226148896${i}`
    obj.questionIDs = `o75111626169778613460n606912453332533333${i}`
  }
  // 将随机生成好的假数据添加到假数据数组中
  TeamList.value.push({
    counts: 0, // 总条数
    pagesize: 10, // 条数
    pages: 0, // 总页码
    page: 1, // 当前页码
    items: obj
  })
}
// 声明的组题列表假数据数组有多少个就有多少个题目预览的详细信息
TeamList.value.forEach(item => {
  const ITEM = item.items // items
  const Difficulty = setRandom(1, 3) // 难度
  // 生成对应的随机假数据
  const obj = {
    questionIDs: ITEM.questionIDs, // 题目编号
    items: {
      addDate: ITEM.addTime, // 组题时间
      questionType: ITEM.questionType, // 题型(1: 单选, 2: 多选, 3: 简答)
      id: setRandom(0, 500), // 编号
      difficulty:
        Difficulty === 1 ? '简单' : Difficulty === 2 ? '一般' : '困难', // 难度
      tags:
        Difficulty === 1 ? 'html' : Difficulty === 2 ? '属性' : 'javascript', // 标签
      subjectName: '前端', // 学科
      directoryName: Difficulty === 2 ? 'css基础' : 'vue基础', // 目录
      direction: Difficulty === 2 ? '互联网金融' : '企业服务', // 方向
      question:
      Number(ITEM.questionType) === 1
          ? '<p>a标签有什么作用？</p>'
          : Number(ITEM.questionType) === 2
          ? '<p>下列容器中是框架容器的是？</p>'
          : '<p>在css中可以直接设置高度的容器是？</p>', // 题干
      options:
        Number(ITEM.questionType) === 1
          ? [
              {
                code: 'A',
                id: 92,
                img: '',
                isRight: 1,
                questionsID: 23,
                title: '跳转'
              },
              {
                code: 'B',
                id: 93,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: '切换'
              },
              {
                code: 'C',
                id: 94,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: '没用'
              },
              {
                code: 'D',
                id: 95,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: '以上都错'
              }
            ]
          : Number(ITEM.questionType) === 3
          ? [
              {
                code: 'A',
                id: 92,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: 'span'
              },
              {
                code: 'B',
                id: 93,
                img: '',
                isRight: 1,
                questionsID: 23,
                title: 'article'
              },
              {
                code: 'C',
                id: 94,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: 'b'
              },
              {
                code: 'D',
                id: 95,
                img: '',
                isRight: 0,
                questionsID: 23,
                title: 'i'
              }
            ]
          : [
              {
                code: 'A',
                id: 87,
                img: '',
                isRight: 0,
                questionsID: 22,
                title: 'span'
              },
              {
                code: 'B',
                id: 88,
                img: '',
                isRight: 1,
                questionsID: 22,
                title: 'section'
              },
              {
                code: 'C',
                id: 89,
                img: '',
                isRight: 0,
                questionsID: 22,
                title: 'i'
              },
              {
                code: 'D',
                id: 90,
                img: '',
                isRight: 0,
                questionsID: 22,
                title: 'em'
              },
              {
                code: 'E',
                id: 91,
                img: '',
                isRight: 1,
                questionsID: 22,
                title: 'div'
              }
            ],
      videoURL: 'https://v-cdn.zjol.com.cn/277004.mp4', // 答案视频
      answer:
        Difficulty === 1
          ? 'a链接是用于网页跳转的'
          : Difficulty === 2
          ? '用于布局的容器组件，方便快速搭建页面的基本结构：'
          : 'https://element.eleme.cn/#/zh-CN/component/i18n', //答案解析
      remarks:
        Difficulty === 1 ? 'html基础' : Difficulty === 2 ? 'css基础' : 'vue基础' // 题目备注
    }
  }
  // 将假数据添加进去
  TopicPreview.value.push(obj)
})
// 往组题列表假数据数组添加默认的总页码条数等数据
TeamList.value.forEach(item => {
  item.counts = TeamList.value.length // 总条数
  item.pages = item.counts / item.pagesize // 总页码
})
export default [
  // 获取组题列表的数据
  {
    url: /\/questions\/randoms\/$/,
    type: 'get',
    response: (data: RequtstTeamListType) => {
          const page = JSON.parse(data.body).page || 1 // 页码
      const pagesize = JSON.parse(data.body).pagesize || 10 // 条数
      try {
        if (!JSON.parse(data.body).keyword) {
          // 当前条数
          // 把页码条数等数据修改
          TeamList.value.forEach(item => {
            item.page = page // 当前页码
            item.pagesize = pagesize // 条数
            item.counts = TeamList.value.length // 总条数
            item.pages = item.counts / item.pagesize // 总页码
          })
          // 根据对应的页码和条数返回新数组
          const newarr = TeamList.value.filter((item, index) => {
            // 起始值
            const str = (page - 1) * pagesize
            // 当数组数据的数据不够获取的条数的时候
            if (TeamList.value.length < str + pagesize) {
              if (index >= str && index < TeamList.value.length) return item
              // 当为对应页码数据的时候并且数据够够对应数量的时候返回对应数量的数组数据
            } else if (index >= str && index < str + pagesize) {
              return item
            }
          })
          return {
            code: 200,
            message: '响应成功',
            data: newarr
          }
        } else {
          // 根据返回值返回新的数组数据
          const arr = TeamList.value.filter(
            item => item.items.id === JSON.parse(data.body).keyword
          )
          // 把页码条数等数据修改
          arr.forEach(item => {
            item.counts = arr.length // 总条数
            item.page = page // 当前页码
            item.pagesize = pagesize // 条数
            item.pages = item.counts / item.pagesize // 总页码
          })
          // 根据对应的页码和条数返回新数组
          const newarr = arr.filter((item, index) => {
            // 起始值
            const str = (page - 1) * pagesize
            // 当数组数据的数据不够获取的条数的时候
            if (arr.length < str + pagesize) {
              if (index >= str && index < arr.length) return item
              // 当为对应页码数据的时候并且数据够够对应数量的时候返回对应数量的数组数据
            } else if (index >= str && index < str + pagesize) {
              return item
            }
          })
          return {
            code: 200,
            message: '响应成功',
            data: newarr
          }
        }
      } catch (error) {
        return {
          code: 403,
          message: '响应失败, 请检查参数信息'
        }
      }
    }
  },
  // 删除组题列表数据
  {
    url: /\/questions\/randoms\/id$/,
    type: 'delete',
    response: (data: any) => {
      const id = JSON.parse(data.body).id
      // 根据id删除对应的数据
      TeamList.value.forEach((item, index) => {
        if (item.items.id === id) {
          TeamList.value.splice(index, 1)
          return {
            code: 200,
            message: '删除成功'
          }
        } else {
          return {
            code: 403,
            message: '请检查要删除的数据是否存在'
          }
        }
      })
    }
  },
  // 试题详情
  {
    url: /\/questions\/search\/id$/,
    type: 'get',
    response: (data: RequtstTeamItemType) => {
      const id = JSON.parse(data.body).id
      // 设置一个变量来接受传递的值
      let flag = undefined
      // 根据传递过来的id返回对应的题目详情
      TopicPreview.value.forEach((item: any) => {
        if (item.questionIDs === id) flag = item.items
      })
      if (flag) {
        return {
          code: 200,
          message: '响应成功',
          data: flag
        }
      } else {
        return {
          code: 403,
          message: '请检查搜索的试题数据是否存在'
        }
      }
    }
  }
]
